// 179.最大数
package Leetcode_Second_Brush;

import java.util.Comparator;
import java.util.PriorityQueue;

public class Solution179 {
    public String largestNumber(int[] nums) {
        // 创建一个优先队列，比较时将字符串按自定义规则降序排列
        PriorityQueue<String> pq = new PriorityQueue<>(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                String order1 = o1 + o2;
                String order2 = o2 + o1;
                return order2.compareTo(order1); // 使得拼接结果更大优先
            }
        });

        // 将整数数组转换为字符串并加入优先队列
        for (int num : nums) {
            pq.add(String.valueOf(num));
        }

        // 构建结果字符串
        StringBuilder sb = new StringBuilder();
        while (!pq.isEmpty()) {
            sb.append(pq.poll());
        }

        // 特殊情况处理：如果拼接结果的第一个字符是 '0'，说明所有数字都是 '0'
        if (sb.charAt(0) == '0') {
            return "0";
        }

        return sb.toString();
    }
}
